فرض کن میخوای یه نامهٔ محرمانه رو از راه دور برای کسی بفرستی. اگر نامه رو بدون پاکت بفرستی، هر کسی میتونه بخونش. اما اگر توی یه پاکت قفلشده بذاری و فقط اون شخص کلید داشته باشه، ارتباطت امن میشه. توی لینوکس، SSH دقیقاً همینه: یه راه امن برای ارتباط با سرور از راه دور که تمام اطلاعات رو رمزنگاری میکنه و حتی با کلید میتونی بدون رمز عبور وارد بشی. این جلسه بهت یاد میده چطور از SSH استفاده کنی و امنیتش رو بالا ببری!
SSH (مخفف Secure Shell) یک پروتکل امن برای ارتباط با سیستمهای راه دور است. مزایای اصلی آن:
scp و sftp.در SSH دو نوع ساختار کلید وجود دارد:
ssh-keygen
ssh-keygen ابزاری برای تولید جفتکلیدهای عمومی/خصوصی است.
توضیح:
-t rsa → نوع کلید RSA.-b 4096 → اندازهٔ کلید (۴۰۹۶ بیت، امنتر).-C → کامنت (برای شناسایی بهتر).~/.ssh/id_rsa و کلید عمومی در ~/.ssh/id_rsa.pub ذخیره میشود.بعد از ساخت کلید، باید کلید عمومی را به سرور مقصد منتقل کنید تا سرور شما را بشناسد.
ssh-copy-id (سادهترین)
توضیح: ssh-copy-id کلید عمومی را به ~/.ssh/authorized_keys در سرور مقصد اضافه میکند.
توضیح: کلید عمومی را خوانده و از طریق SSH به سرور ارسال میکند و در فایل authorized_keys ذخیره میکند.
بعد از انتقال کلید، میتوانید بدون رمز عبور به سرور متصل شوید:
توضیح: حالا بدون نیاز به رمز عبور وارد سرور میشوید (اگر Passphrase تعیین کردهاید، فقط یک بار آن را وارد میکنید).
برای افزایش امنیت سرور SSH، باید محدودیتهای زیر را اعمال کنید:
| محدودیت | توضیح | تنظیم در /etc/ssh/sshd_config |
|---|---|---|
| ورود کاربر root | ورود مستقیم root را ممنوع کنید. | PermitRootLogin no |
| X11 Forwarding | اگر نیاز ندارید، غیرفعال کنید. | X11Forwarding no |
| ورود با رمز عبور | فقط با کلید اجازهٔ ورود بدهید. | PasswordAuthentication no |
| تغییر پورت پیشفرض | پورت ۲۲ را به پورت دیگری تغییر دهید. | Port 2222 |
| چالش-پاسخ | غیرفعال کردن احراز هویت چالشی. | ChallengeResponseAuthentication no |
| استفاده از PAM | غیرفعال کردن احراز هویت PAM. | UsePAM no |
PasswordAuthentication، حتماً مطمئن شوید که کلید شما به درستی تنظیم شده است، در غیر این صورت خودتان را از سرور قفل خواهید کرد!
/etc/ssh/sshd_config، سرویس SSH را ریاستارت کنید: sudo systemctl restart sshd
| دستور | کاربرد | مثال |
|---|---|---|
ssh |
اتصال به سرور از راه دور | ssh user@192.168.1.100 |
scp |
انتقال فایل از طریق SSH | scp file.txt user@192.168.1.100:/tmp/ |
sftp |
انتقال فایل تعاملی (مشابه FTP امن) | sftp user@192.168.1.100 |
ssh-keygen |
تولید جفتکلید | ssh-keygen -t rsa -b 4096 |
ssh-copy-id |
کپی کلید عمومی به سرور | ssh-copy-id user@192.168.1.100 |
scp
توضیح: فایل document.pdf را از طریق پورت ۲۲۲۲ به سرور منتقل میکند.
scp از همان احراز هویت SSH استفاده میکند، پس اگر کلید تنظیم شده باشد، نیازی به رمز عبور نیست.
ssh-keygen → تولید جفتکلید.ssh-copy-id → انتقال کلید عمومی به سرور.scp و sftp → انتقال فایل امن.یک سناریو کامل پیادهسازی کنید:
ssh-keygen بسازید.ssh-copy-id به یک سرور آزمایشی منتقل کنید.ssh بدون رمز به سرور متصل شوید.scp به سرور منتقل کنید./etc/ssh/sshd_config تنظیمات امنیتی (غیرفعال کردن رمز، تغییر پورت) را اعمال کنید.